package com.sx.sx1.lintcode.day717;

public class LC212 {

    static class Solution {
        /*
         * @param string: An array of Char
         * @param length: The true length of the string
         * @return: The true length of new string
         */
        public int replaceBlank(char[] string, int length) {
            char[] ans = new char[length*3];
            int index = 0;
            for (int i = 0; i < length; i++) {
                char c = string[i];
                if (c == ' ') {
                    ans[index++] = '%';
                    ans[index++] = '2';
                    ans[index++] = '0';
                } else ans[index++] = c;
            }

            for (int i = 0; i <index ; i++) {
                string[i] = ans[i];
            }
            return index;
        }
    }


    public static void main(String[] args) {
        Solution obj = new Solution();
        //运行报错没事，答案就是他
        System.out.println(obj.replaceBlank("Mr John Smith".toCharArray(),13));
    }
}


/*
LintCode-Logo
搜索题目、标签、题集
中文
avatar
您有189条未读消息，请及时查看
212 · 空格替换
算法
简单
通过率
22%

题目
题解23
笔记
讨论99+
排名
记录
描述
设计一种方法，将一个字符串中的所有空格替换成 %20 。字符串以字符数组的形式给出，你可以假设该字符串有足够的空间来加入新的字符，且你得到的是“真实的”字符长度。

你的程序还需要返回被替换后的字符串的长度。

最短时间刷“透”算法面试：《66页算法宝典》.pdf

微信添加【jiuzhangfeifei】备注【66】领取


如果使用 Java 或 Python, 程序中请用字符数组表示字符串。

样例
样例 1：

输入：string[] = "Mr John Smith" and length = 13
输出：string[] = "Mr%20John%20Smith" and return 17
解释：
对于字符串 "Mr John Smith"，长度为 13。替换空格之后，参数中的字符串需要变为 "Mr%20John%20Smith"，并且把新长度 17 作为结果返回。
样例 2：

输入：string[] = "LintCode and Jiuzhang" and length = 21
输出：string[] = "LintCode%20and%20Jiuzhang" and return 25
解释：
对于字符串 "LintCode and Jiuzhang"，长度为 21。替换空格之后，参数中的字符串需要变为 "LintCode%20and%20Jiuzhang"，并且把新长度 25 作为结果返回。
挑战
在原字符串(字符数组)中完成替换，不适用额外空间

标签
相关题目

64
合并排序数组（简单版）
简单
推荐课程

ACM金牌逐行带刷班
最适合懒人的刷题课--躺平看算法大神在线coding，讲解思路+现场debug，手撕面试高频题
206/1857
已开启智能提示
发起考试
15 分 00 秒
12345678910

控制台
        历史提交

 */